package com.framework.utils;

import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Tools
{

	/**
	 * 随机生成六位数验证码
	 * 
	 * @return
	 */
	public static int getRandomNum()
	{
		Random r = new Random();
		return r.nextInt(900000) + 100000;// (Math.random()*(999999-100000)+100000)
	}


    public static int RandomDemo(){
            long t = System.currentTimeMillis();//获得当前时间的毫秒数
            Random rd = new Random(t);//作为种子数传入到Random的构造器中
            return rd.nextInt();//生成随即整数
    }

	/**
	 * 检测字符串是否不为空(null,"","null")
	 * 
	 * @param s
	 * @return 不为空则返回true，否则返回false
	 */
	public static boolean notEmpty(String s)
	{
		return s != null && !"".equals(s) && !"null".equals(s);
	}

	/**
	 * 检测字符串是否为空(null,"","null")
	 * 
	 * @param s
	 * @return 为空则返回true，不否则返回false
	 */
	public static boolean isEmpty(String s)
	{
		return s == null || "".equals(s) || "null".equals(s);
	}

	/**
	 * 字符串转换为字符串数组
	 * 
	 * @param str
	 *            字符串
	 * @param splitRegex
	 *            分隔符
	 * @return
	 */
	public static String[] str2StrArray(String str, String splitRegex)
	{
		if (isEmpty(str))
		{
			return null;
		}
		return str.split(splitRegex);
	}

	/**
	 * 用默认的分隔符(,)将字符串转换为字符串数组
	 * 
	 * @param str
	 *            字符串
	 * @return
	 */
	public static String[] str2StrArray(String str)
	{
		return str2StrArray(str, ",\\s*");
	}

	/**
	 * 按照yyyy-MM-dd HH:mm:ss的格式，日期转字符串
	 * 
	 * @param date
	 * @return yyyy-MM-dd HH:mm:ss
	 */
	public static String date2Str(Date date)
	{
		return date2Str(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 按照yyyy-MM-dd HH:mm:ss的格式，字符串转日期
	 * 
	 * @param date
	 * @return
	 */
	public static Date str2Date(String date)
	{
		if (notEmpty(date))
		{
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			try
			{
				return sdf.parse(date);
			} catch (ParseException e)
			{
				e.printStackTrace();
			}
			return new Date();
		} else
		{
			return null;
		}
	}

	/**
	 * 按照参数format的格式，日期转字符串
	 * 
	 * @param date
	 * @param format
	 * @return
	 */
	public static String date2Str(Date date, String format)
	{
		if (date != null)
		{
			SimpleDateFormat sdf = new SimpleDateFormat(format);
			return sdf.format(date);
		} else
		{
			return "";
		}
	}

	/**
	 * 把时间根据时、分、秒转换为时间段
	 * 
	 * @param StrDate
	 */
	public static String getTimes(String StrDate)
	{
		String resultTimes = "";

		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date now;

		try
		{
			now = new Date();
			Date date = df.parse(StrDate);
			long times = now.getTime() - date.getTime();
			long day = times / (24 * 60 * 60 * 1000);
			long hour = (times / (60 * 60 * 1000) - day * 24);
			long min = ((times / (60 * 1000)) - day * 24 * 60 - hour * 60);
			long sec = (times / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);

			StringBuffer sb = new StringBuffer();
			// sb.append("发表于：");
			if (hour > 0)
			{
				sb.append(hour + "小时前");
			} else if (min > 0)
			{
				sb.append(min + "分钟前");
			} else
			{
				sb.append(sec + "秒前");
			}

			resultTimes = sb.toString();
		} catch (ParseException e)
		{
			e.printStackTrace();
		}

		return resultTimes;
	}

	/**
	 * 写txt里的单行内容
	 * 
	 * @param filePath
	 *            文件路径
	 * @param content
	 *            写入的内容
	 */
	public static void writeFile(String fileP, String content)
	{
//		String filePath = String.valueOf(Thread.currentThread()
//				.getContextClassLoader().getResource(""))
//				+ "../../"; // 项目路径
//		filePath = (filePath.trim() + fileP.trim()).substring(6).trim();
		PrintWriter pw;
		//如果地址不存在，新建
		File file = new File(fileP);
		if (!file.exists()) {
			try {
				file.createNewFile();
			} catch (IOException e) {
				System.err.println("========写入内容出现问题============");
				e.printStackTrace();
			}
		}
		try
		{
			pw = new PrintWriter(new FileWriter(fileP));
			pw.print(content);
			pw.close();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
	}

	/**
	 * 验证邮箱
	 * 
	 * @param email
	 * @return
	 */
	public static boolean checkEmail(String email)
	{
		boolean flag = false;
		try
		{
			String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
			Pattern regex = Pattern.compile(check);
			Matcher matcher = regex.matcher(email);
			flag = matcher.matches();
		} catch (Exception e)
		{
			flag = false;
		}
		return flag;
	}

	/**
	 * 验证手机号码
	 * 
	 * @param mobiles
	 * @return
	 */
	public static boolean checkMobileNumber(String mobileNumber)
	{
		boolean flag = false;
		try
		{
			Pattern regex = Pattern
					.compile("^(((13[0-9])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8})|(0\\d{2}-\\d{8})|(0\\d{3}-\\d{7})$");
			Matcher matcher = regex.matcher(mobileNumber);
			flag = matcher.matches();
		} catch (Exception e)
		{
			flag = false;
		}
		return flag;
	}

	/**
	 * 读取txt里的单行内容
	 * 
	 * @param filePath
	 *            文件路径
	 */
	public static String readTxtFile(String fileP)
	{
		try
		{

//			String filePath = String.valueOf(Thread.currentThread()
//					.getContextClassLoader().getResource(""))
//					+ "../../"; // 项目路径
//			filePath = filePath.replaceAll("file:/", "");
//			filePath = filePath.replaceAll("%20", " ");
//			filePath = filePath.trim() + fileP.trim();

			String encoding = "utf-8";
			File file = new File(fileP);
			if (file.isFile() && file.exists())
			{ // 判断文件是否存在
				InputStreamReader read = new InputStreamReader(
						new FileInputStream(file), encoding); // 考虑到编码格式
				BufferedReader bufferedReader = new BufferedReader(read);
				String lineTxt = null;
				while ((lineTxt = bufferedReader.readLine()) != null)
				{
					return lineTxt;
				}
				read.close();
			} else
			{
				System.out.println("找不到指定的文件,查看此路径是否正确:" + fileP);
			}
		} catch (Exception e)
		{
			System.out.println("读取文件内容出错");
		}
		return "";
	}

	public static void main(String[] args)
	{
		System.out.println(getRandomNum());
	}

    /**
     * List<String> 转 String 逗号分隔（字段加引号）
     * @param listString
     * @return
     */
    public static String ListToString_Quotes(List<String> listString)
    {
        String rString="";
        for(String tmp:listString)
        {
            rString+="'"+tmp.trim()+"',";
        }

        if(rString.length()>0)
        {
            rString=rString.substring(0,rString.length()-1);
        }

        return  rString;
    }
}
